package _2022.hot100._581_最短无需连续子数组;

import java.util.Arrays;

/**
 * @author： YHSimon
 * @date： 2022-06-15 09:50
 */
public class Solution {
    // 1 ms 一次遍历
    public int findUnsortedSubarray2(int[] nums){
        int n=nums.length;
        int max=Integer.MIN_VALUE,right=-1;
        int min=Integer.MAX_VALUE,left=-1;
        for(int i=0;i<n;i++){
            if(max>nums[i]){
                right=i;
            }else{
                max=Math.max(max, nums[i]);
            }

            if(min<nums[n-i-1]){
                left=n-i-1;
            }else{
                min=Math.min(min, nums[n-i-1]);
            }
        }
        return right==-1?0:right-left+1;
    }

    // 7 ms 排序
    public int findUnsortedSubarray(int[] nums){
        int[] tmp = Arrays.copyOf(nums, nums.length);
        Arrays.sort(tmp);
        int i=0;
        while(i<nums.length){
            if(nums[i]!=tmp[i]){
                break;
            }
            i++;
        }
        int j=nums.length-1;
        while(j>=0){
            if(nums[j]!=tmp[j]){
                break;
            }
            j--;
        }
        if(i>=j){
            return 0;
        }
        return j-i+1;
    }
}
